{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf410
{\fonttbl\f0\fswiss\fcharset77 Helvetica-Bold;\f1\fswiss\fcharset77 Helvetica;\f2\fswiss\fcharset77 ArialMT;
\f3\fswiss\fcharset77 Arial-BoldMT;}
{\colortbl;\red255\green255\blue255;}
\margl1440\margr1440\vieww12500\viewh12520\viewkind0
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural

\f0\b\fs24 \cf0 Soundflower Source\
(revised 8/9/2006 for version 1.2)\
\
\

\f1\b0 Soundflower.xcodeproj is a Xcode 2.2 compatible project.\
\
There are two Build Configurations in the project: the Development build configuration builds Soundflower for the architecture of the machine you are using. The Deployment configuration builds a Universal Binary version.\
\
Build Configuration\
\
In order to build a kernel extension that works on both PPC and Intel you need to use special build configuration flags that tell Xcode to use GCC 3.3 and Mac OS X SDK 10.2.8 on PPC and GCC 4.0 and Mac OS X 10.4.u SDK on Intel. When in Xcode, if you choose Edit Active Target SoundflowerDriver, you will see these settings listed when you scroll to the very bottom of the Build tab.\
\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
\cf0 Note that Mac OS X 10.2.8 SDK is no longer included with the current Apple Developer Tools installer. In order to get it, you'll need to download an older Developer Tools installer (such as XCode 2.0) using your ADC account, and open the Packages folder that appears in the disk image. 
\f2 You'll see 
\f3\b MacOSX10.2.8.pkg
\f2\b0  inside. Double-click it to install into your Developer/SDKs folder. You'll need to restart XCode if it is running when you install the SDK.\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural

\f1 \cf0 \
Permissions\
\
Files in a kernel extension (kext) bundle have to be set as follows:
\f0\b \

\f1\b0 	owner: root - read/write\
	group: wheel - read only\
	others: read only\
\
Unfortunately there doesn't seem to be a simple way to do this in Xcode. We tried running the xcodebuild command-line tool as root, but it sets the group to "admin" not "wheel" and OS X requires that the kernel extension group be set to wheel.\
\
One solution for setting owner and group properly is to rebuild Soundflower using Xcode, then build a new installer by double-clicking the Soundflower.pmproj file to launch PackageMaker. This project is set up to look for a Soundflower.kext file in the folder Actual Item, which is where the Xcode project builds it.\
\
However, before building the installer, you need to change the permissions on the kext bundle:\
\
- Open the Soundflower.pmproj file in PackageMaker\
\
- Click the Contents tab\
\
- Click the File Permissions... button\
\
- Click the Apply Recommendations button (you'll then need to enter a root password after you click OK)\
\
This changes the owner / group to root / wheel as is necessary. We've seen cases where Apply Recommendations did not do the right thing so check the resulting permissions against the requirements listed above.\
\
At this point, you could install the Soundflower.kext bundle inside the Actual item folder manually, or you could choose Build... from the Project menu in PackageMaker to create a new Soundflower.pkg file. Then run the installer you created and enter a root password.\
\
The PackageMaker project uses relative paths to find its files, so the Actual Item and Resources folders should remain where they are relative to the .pmproj file.\
\
Note that after you change the permissions of Soundflower.kext to root/wheel in the Actual Item folder, attempting to rebuild or even Clean the Soundflower.xcodeproj in Xcode will fail. If you want to rebuild the kernel extension from scratch after having changed the owner and group, first delete Soundflower.kext from the Actual Item folder manually in the Finder.\
\
Please feel free to contact me if you have any questions!
\f0\b \
\
ma++ ingalls\
   for Cycling'74\
matt@sfsound.org\
\
\
}